package Test;
import Bricks.Core;
import threds.Print;
import Tool.intArrayTool;

import java.lang.Math;

public class test {
    static int ch;
    public static void main(String[] args) {
//        Mydll.mydll.add(1,2);
//        while(true){
//            ch = Mydll.mydll.myGetch();
//            System.out.print(ch);
//        }



/*
        CLibrary.INSTANCE.printf("Hello, World\n");
        for (int i=0;i < args.length;i++) {
            CLibrary.INSTANCE.printf("Argument %d: %s\n", i, args[i]);
        }
*/
//        int number0 = 0;
//        int number1 = 0;
//        int number2 = 0;
//        int number3 = 0;
//        int number4 = 0;
//        int number5 = 0;
//        int number6 = 0;
//        int number7 = 0;
//        int number8 = 0;
//        int number9 = 0;
//        for (int i = 0 ; i < 10000; i ++){
//            int a = randomNumber(0,10);
//            if(a == 0) number0 ++;
//            else if(a == 1) number1 ++;
//            else if(a == 2) number2 ++;
//            else if(a == 3) number3 ++;
//            else if(a == 4) number4 ++;
//            else if(a == 5) number5 ++;
//            else if(a == 6) number6 ++;
//            else if(a == 7) number7 ++;
//            else if(a == 8) number8 ++;
//            else number9 ++;
//        }
//        System.out.println("0的次数为：" + number0);
//        System.out.println("1的次数为：" + number1);
//        System.out.println("2的次数为：" + number2);
//        System.out.println("3的次数为：" + number3);
//        System.out.println("4的次数为：" + number4);
//        System.out.println("5的次数为：" + number5);
//        System.out.println("6的次数为：" + number6);
//        System.out.println("7的次数为：" + number7);
//        System.out.println("8的次数为：" + number8);
//        System.out.println("9的次数为：" + number9);
//        Core core = new Core();
//        int [] itemArray = new int[9];
//        itemArray[0] = 3;
//        itemArray[1] = 4;
//        itemArray[2] = 4;
//        itemArray[3] = 4;
//        itemArray[4] = 5;
//        itemArray[5] = 4;
//        itemArray[6] = 6;
//        itemArray[7] = 4;
//        itemArray[8] = 1; //1标识方块为竖直长条
//        itemArray = Core.deformationVerticalStrip(itemArray);
//        System.out.println(coordinateIsLegal(itemArray));
//
//        int[] a1={1,2,3,4,5,6};
//
//        int[] a2= new int[6];
//
//
//
//        System.arraycopy(a1, 0, a2, 0, 6);
//
//        System.out.print("copy后结果：");
//
//        for(int i=0;i<a2.length;i++){
//
//            System.out.print(a2[i]+" ");
//
//        }
//        for(int i = 0; i < a1.length; i++){
//            a1[i] = 99;
//        }
//        for(int i=0;i<a2.length;i++){
//
//            System.out.print(a2[i]+" ");
//
//        }
//        for(int i=0;i<a1.length;i++){
//
//            System.out.print(a1[i]+" ");
//
//        }
//        Core core = new Core();
//        println(Core.movingArray);
//        System.out.println("________");
//        Core.fastFall();
//        println(Core.movingArray);
       int[][] k = createIntArray(24,10);
//       int [] a = {1,2,3};
//       int[] b = {1,2,3};
//
//
//       System.out.println(intArrayTool.isSame(a,b));
//        k[22][0]= 0;
//        //k[21][0]= 0;
//        println(k);
//        Print print = new Print();
//        System.out.println("________");
//        print.eliminate(k);
//        println(k);
        int i = 0;
//        int[] kr = {1,2,3,4,5};
//        System.out.println(intArrayTool.isHasSome(kr,2));
        Core core = new Core();
        Core.twoArray[4][9] = 1;
        move();






    }
    public static void println (int[] intArray){
        for(int i = 0 ; i < intArray.length; i ++){
            System.out.println(intArray[i]);
        }
    }
    public static void println (int[][] intArray){
        for(int i = 0 ; i < intArray.length; i ++){
            for(int j = 0; j < intArray[i].length; j ++){
                System.out.print(intArray[i][j]);
            }
            System.out.print("\n");
        }
    }
    public static int[][] createIntArray(int a, int b){
        int [] [] array = new int[a][b];
        for(int i = 0; i < a; i ++ ){
            int [] xiaoArray = new int[b];
            for(int j = 0 ; j < b; j ++){
                xiaoArray[j] = 0;
                if(i > 19){
                    xiaoArray[j] = 1;
                }
            }
            array[i] = xiaoArray;
        }
        return array;
    }







    public static int randomNumber(int min,int max){
        int intrandomWithMathRandom = (int) ((Math.random() * (max - min)) + min);
        return intrandomWithMathRandom;
    }
    public static boolean coordinateIsLegal(int [] coordinateArray){
        boolean isLegal = true;  //缺省认为坐标是合法的
        for(int i = 0; i < coordinateArray.length-2; i ++){
            if(i%2!=0)continue;
            if(coordinateArray[i] > 23 || coordinateArray[i+1] > 9 || coordinateArray[i + 1] < 0
                    || Core.twoArray[coordinateArray[i]][coordinateArray[i + 1]] == 1){
                isLegal = false;
            }
        }
        return  isLegal;
    }
    public static void move(){
        while(true){
            if(intArrayTool.isHasSome(Core.twoArray[4],1)){
                Core.threadDeath = 0;
                System.out.println("结束,得分：" + Core.score + "。 按回车重新开始游戏");
            }

            try{
                int keyInt = Mydll.mydll._getch();  //利用jna，调用C函数库的getch（），获取键盘输入
                //右移
                if(keyInt == 100 && Core.canShiftRight()){   //代表D键（100），那么相应操作为右移
                    //更新方块坐标
                    for(int i = 0; i < Core.movingArray.length-1; i ++){
                        if(i%2 == 0) continue; //纵坐标值不做更改
                        Core.movingArray[i] += 1;  //横坐标往右移动1
                    }
                }
                //左移
                if(keyInt == 97 && Core.canShiftLeft()){   //代表A键（97），那么相应操作为左移
                    //更新方块坐标
                    for(int i = 0; i < Core.movingArray.length-1; i ++){
                        if(i%2 == 0) continue; //纵坐标值不做更改
                        Core.movingArray[i] -= 1;  //横坐标往左移动1
                    }
                }
                //变形
                if(keyInt == 32){   //代表空格键（32），那么相应操作为变形
                    Core.deformation();
                }
                //急速下移
                if(keyInt == 106){   //代表J键（106），那么相应操作为急速下移
                    Core.fastFall();
                }
                //重开
                //思路是：通过控制一个类变量，先让搬运、打印两个线程循环执行体结束循环，那么，这两个线程也就随之死亡，然后新线程诞生
                //新线程启动，这就是重启了
                if(keyInt == 13){    //代表回车键（13），重开
//                    Core.threadDeath = 0;  //这个值为0时，搬运、打印两个线程的while循环中的判断语句将会变为false,两线程死亡，咦好像搬运线程逃过一个死劫
//                    //新的两个线程诞生、启动
//                    Core core = new Core();
//                    Print print = new Print();
//                    Thread printThread = new Thread(print);
//                    Thread handingThread = new Thread(print);
//                    printThread.setName("打印");
//                    handingThread.setName("搬运");
//                    printThread.start();
//                    handingThread.start();
                    //上面的思路错了，其实很简单，我们只需要重置那个被打印的二维数组就可以了呀，诶绕了一大圈,游戏没有结束的重开
                    if(Core.threadDeath == 1) {
                        Core core = new Core();
                    }
                    //游戏结束，重新开始游戏
                    else {
                        Core core = new Core();
                        Print print = new Print(Core.modelofNmber);
                        Thread printThread = new Thread(print);
                        Thread handingThread = new Thread(print);
                        printThread.setName("打印");
                        handingThread.setName("搬运");
                        printThread.start();
                        handingThread.start();
                    }

                }
            }
            catch ( Exception e){

            }
        }
    }
    //检测坐标是否合法

}
